package cn.sw.file.service.composite;

import cn.sw.common.database.domain.dto.query.FilesFragmentationQueryDto;
import cn.sw.common.database.domain.entity.FilesFragmentation;
import cn.sw.file.fragmentation.reactminiospring.common.R;
import cn.sw.file.fragmentation.reactminiospring.entity.Files;
import cn.sw.file.fragmentation.reactminiospring.model.FileUploadInfo;
import cn.sw.file.fragmentation.reactminiospring.model.UploadUrlsVO;

import java.util.List;

public interface CompositeFilesFragmentationService {

    /**
     * 1.通过MD5检查文件是否存在
     * @param md5
     * @return
     */
    R<FileUploadInfo> checkFileByMd5(String md5);

    /**
     * 2.初始化分片上传
     * @param fileUploadInfo 文件信息
     * @return 返回文件生成的分片上传地址
     */
    R<UploadUrlsVO> initFragmentationUpload(FileUploadInfo fileUploadInfo);

    /**
     * 3.合并分片上传
     * @param md5
     * @return
     */
    R<String> mergeMultipartUpload(String md5);

    /**
     * 获取文件列表
     * @param query
     * @return
     */
    R<List<FilesFragmentation>>  getFileList(FilesFragmentationQueryDto query);

    /**
     * 删除文件
     * @param id
     * @return
     */
    R<String> deleteFile(String id);
}
